#pragma once
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>
#include<time.h>


typedef int HPTypeData;
typedef struct Heap
{
	HPTypeData* a;
	int size;
	int capacity;
}Heap;

void HPInit(Heap* hp);
void HPInitArray(Heap* hp,int n, int* a);
void HPDestory(Heap* hp);
void HPPush(Heap* hp, HPTypeData x);
void HPPop(Heap* hp);
int HPSize(Heap* hp);
HPTypeData HPTop(Heap* hp);
bool  HPEmpty(Heap* hp);
void Adjustup(HPTypeData* a, int child);
Adjustdown(HPTypeData* a, int n, int parent);
void Swap(HPTypeData* p1, HPTypeData* p2);